package com.itheima.多态.多态的使用场景;

/**
 * @Author 王加鑫
 * @Date 2021/5/9 10:53
 * @Version 1.0
 * 未来多态语法用的最多的就是在方法的参数和返回值类=类型上
 * 当方法的参数是一个父类型时,调用方法可以传递该父类的的任意子类对象
 * 当方法的参数是一个接口类型时,调用方法可以传递该接口的任意实现类对象
 *
 * 当方法的返回值类型是一个父类型时,方法中可以返回该父类的的任意子类对象
 * 当方法的返回值类型是一个接口类型时,方法中可以返回该接口类的的任意实现类对象
 */
public class Test2 {
    public static void main(String[] args) {
        method1().chongDian();
        method1().setDocuments();

        method2().setDocuments();
        method2().chongDian();
    }

    public static Usb method1(){
        return new Upan();
    }

    public static Usb method2(){
        return new Phone();
    }
}

interface Usb{

    //充电
    void chongDian();

    //传文件
    void setDocuments();
}

class Upan implements Usb{

    @Override
    public void chongDian() {
        System.out.println("U盘供电");
    }

    @Override
    public void setDocuments() {
        System.out.println("U盘传文件");

    }
}

class Phone implements Usb{

    @Override
    public void chongDian() {
        System.out.println("手机充电");
    }

    @Override
    public void setDocuments() {
        System.out.println("手机传文件");

    }
}
